home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / 3rdparty / tools / toolcrft / ptmodcw.tpw < prev    next >
Encoding:
Text File  |  1995-10-23  |  24.2 KB  |  690 lines

  1. #!------------------------------------------------------------------------------
  2. #!
  3. #! Modifications to standard CW Template files:  FILECTRL.TPW
  4. #!                                               FIELD.TPW
  5. #!                                               STANDARD.TPW
  6. #!
  7. #!------------------------------------------------------------------------------
  8. #!
  9. #!
  10. #!
  11. #!------------------------------------------------------------------------------
  12. #! Modified FILECTRL.TPW
  13. #!------------------------------------------------------------------------------
  14. #GROUP(%FileControlInitialize)
  15. #IF(%Primary)
  16.   #ADD(%ProcFilesUsed,%Primary)
  17. #ENDIF
  18. #FOR(%Secondary)
  19.   #ADD(%ProcFilesUsed,%Secondary)
  20. #ENDFOR
  21. #FOR(%OtherFiles)
  22.   #ADD(%ProcFilesUsed,%OtherFiles)
  23. #ENDFOR
  24. #!------------------------------------------------------------------------------
  25. #GROUP(%FileControlUpdate)
  26. #FOR(%ProcFilesUsed)
  27.   #ADD(%ModuleFilesUsed,%ProcFilesUsed)
  28. #ENDFOR
  29. #!------------------------------------------------------------------------------
  30. #GROUP(%FileControlOpen)
  31. #EMBED(%BeforeFileOpen,'Beginning of Procedure, Before Opening Files')
  32. #FOR(%ProcFilesUsed)
  33. #INSERT(%FileControlOpenFile,%ProcFilesUsed)
  34. #ENDFOR
  35. #EMBED(%AfterFileOpen,'Beginning of Procedure, After Opening Files')
  36. #!------------------------------------------------------------------------------
  37. #GROUP(%FileControlOpenFile,%CurrentFile)
  38. #DECLARE(%CheckOpenParameters)
  39.   #FIX(%File,%CurrentFile)
  40.   #CASE(%OverrideOpenMode)
  41.   #OF('Share')
  42.     #SET(%CheckOpenParameters,',42h')
  43.   #OF('Open')
  44.     #SET(%CheckOpenParameters,',22h')
  45.   #OF('Other')
  46.     #CASE(%OverrideOtherAccess)
  47.     #OF('Deny None')
  48.       #SET(%CheckOpenParameters,'+DenyNone')
  49.     #OF('Deny Read')
  50.       #SET(%CheckOpenParameters,'+DenyRead')
  51.     #OF('Deny Write')
  52.       #SET(%CheckOpenParameters,'+DenyWrite')
  53.     #OF('Deny All')
  54.       #SET(%CheckOpenParameters,'+DenyAll')
  55.     #OF('Any Access')
  56.       #SET(%CheckOpenParameters,'+AnyAccess')
  57.     #ENDCASE
  58.     #CASE(%OverrideUserAccess)
  59.     #OF('Read/Write')
  60.       #SET(%CheckOpenParameters,',ReadWrite' & %CheckOpenParameters)
  61.     #OF('ReadOnly')
  62.       #SET(%CheckOpenParameters,',ReadOnly' & %CheckOpenParameters)
  63.     #OF('WriteOnly')
  64.       #SET(%CheckOpenParameters,',WriteOnly' & %CheckOpenParameters)
  65.     #ENDCASE
  66.   #ENDCASE
  67.   #CASE(%OverrideCreate)
  68.   #OF('Use File Setting')
  69.     #IF(%FileCreate)
  70.       #SET(%CheckOpenParameters,',1' & %CheckOpenParameters)
  71.     #ELSE
  72.       #SET(%CheckOpenParameters,',0' & %CheckOpenParameters)
  73.     #ENDIF
  74.   #OF('Create File')
  75.     #SET(%CheckOpenParameters,',1' & %CheckOpenParameters)
  76.   #OF('Do Not Create File')
  77.     #SET(%CheckOpenParameters,',0' & %CheckOpenParameters)
  78.   #ELSE
  79.     #CASE(%DefaultCreate)
  80.     #OF('Use File Setting')
  81.       #IF(%FileCreate)
  82.         #SET(%CheckOpenParameters,',1' & %CheckOpenParameters)
  83.       #ELSE
  84.         #SET(%CheckOpenParameters,',0' & %CheckOpenParameters)
  85.       #ENDIF
  86.     #OF('Create All')
  87.       #SET(%CheckOpenParameters,',1' & %CheckOpenParameters)
  88.     #OF('Create None')
  89.       #SET(%CheckOpenParameters,',0' & %CheckOpenParameters)
  90.     #ENDCASE
  91.   #ENDCASE
  92.   #SET(%CheckOpenParameters,%File & %CheckOpenParameters)
  93.   #CASE(%OverrideCloseFile)
  94.   #OF('Close the File')
  95. IF %File::Used = 0
  96.   CheckOpen(%CheckOpenParameters)
  97. END
  98. %File::Used += 1
  99.   #OF('Keep the File Open')
  100. CheckOpen(%CheckOpenParameters)
  101.   #ELSE
  102.     #IF(%DefaultCloseFile ='Close the File')
  103. IF %File::Used = 0
  104.   CheckOpen(%CheckOpenParameters)
  105. END
  106. %File::Used += 1
  107.     #ELSE
  108. CheckOpen(%CheckOpenParameters)
  109.     #ENDIF
  110.   #ENDCASE
  111. #!------------------------------------------------------------------------------
  112. #GROUP(%FileControlClose)
  113. #EMBED(%BeforeFileClose,'End of Procedure, Before Closing Files')
  114. #FOR(%ProcFilesUsed)
  115. #INSERT(%FileControlCloseFile,%ProcFilesUsed)
  116. #ENDFOR
  117. #EMBED(%AfterFileClose,'End of Procedure, After Closing Files')
  118. #!------------------------------------------------------------------------------
  119. #GROUP(%FileControlCloseFile,%CurrentFile)
  120. #FIX(%File,%CurrentFile)
  121. #CASE(%OverrideCloseFile)
  122. #OF('Close the File')
  123. %File::Used -= 1
  124. IF %File::Used = 0 THEN CLOSE(%File).
  125. #OF('Keep the File Open')
  126. IF %File::Used > 0
  127.   %File::Used -= 1
  128. END
  129. #ELSE
  130.   #IF(%DefaultCloseFile ='Close the File')
  131. %File::Used -= 1
  132. IF %File::Used = 0 THEN CLOSE(%File).
  133.   #ENDIF
  134. #ENDCASE
  135. #!
  136. #!
  137. #!
  138. #!------------------------------------------------------------------------------
  139. #! Modified FIELD.TPW
  140. #!------------------------------------------------------------------------------
  141. #!------------------------------------------------------------------------------
  142. #GROUP(%FieldTemplateStandardButtonMenuPrompt)
  143. #FIELD WHERE(%ControlType = 'BUTTON' OR (%ControlType = 'ITEM' AND NOT EXTRACT(%ControlStatement,'SEPARATOR')))
  144.   #BOXED('Menu/Button Control Prompts')
  145.     #PROMPT('When Pressed',DROP('No Special Action|Call a Procedure|Run a Program')),%ButtonAction,DEFAULT('No Special Action')
  146.     #DISPLAY('')
  147.     #BOXED('Program Definition'),WHERE(%ButtonAction = 'Run a Program'),AT(,20),CLEAR
  148.       #PROMPT('Program Name:',@S40),%ButtonRunName,REQ
  149.       #PROMPT('Parameters:',@s255),%ButtonRunParameters
  150.     #ENDBOXED
  151.     #BOXED('Procedure Definition'),WHERE(%ButtonAction = 'Call a Procedure'),AT(,20)
  152.       #ENABLE(%ButtonAction = 'Call a Procedure'),CLEAR
  153.         #PROMPT('Procedure Name:',PROCEDURE),%ButtonProcedure,REQ
  154.         #PROMPT('Initiate Thread',CHECK),%ButtonThread
  155.       #ENDENABLE
  156.       #ENABLE(%ButtonThread = %True)
  157.         #PROMPT('Thread Stack:',SPIN(@n7,5000,64000,500)),%ButtonThreadStack,DEFAULT(25000)
  158.       #ENDENABLE
  159.       #ENABLE(%ButtonThread = %False),CLEAR
  160.         #PROMPT('Parameters:',@s255),%ButtonParameters
  161.         #PROMPT('Requested File Action:',DROP('None|Insert|Change|Delete|Select')),%ButtonRequest,DEFAULT('None')
  162.       #ENDENABLE
  163.     #ENDBOXED
  164.   #ENDBOXED
  165. #ENDFIELD
  166. #!------------------------------------------------------------------------------
  167. #GROUP(%FieldTemplateStandardButtonMenuHandling)
  168. #IF(%ControlEvent = 'Accepted')
  169.   #IF(%ButtonAction = 'Call a Procedure')
  170.     #IF(%ButtonProcedure)
  171.       #IF(%ButtonThread)
  172. START(%ButtonProcedure,%ButtonThreadStack)
  173.       #ELSE
  174.         #IF(%ButtonRequest AND %ButtonRequest <> 'None')
  175.           #SET(%ValueConstruct,%ButtonRequest & 'Record')
  176. GlobalRequest = %ValueConstruct
  177.         #ENDIF
  178. %ButtonProcedure %ButtonParameters
  179.       #ENDIF
  180.     #ENDIF
  181. LocalRequest = OriginalRequest
  182. DO RefreshWindow
  183.   #ELSIF(%ButtonAction = 'Run a Program')
  184. RUN('%ButtonRunName %ButtonRunParameters')
  185. ForceRefresh = True
  186. LocalRequest = OriginalRequest
  187. DO RefreshWindow
  188.   #ENDIF
  189. #ENDIF
  190. #!------------------------------------------------------------------------------
  191. #GROUP(%FieldTemplateStandardEntryPrompt)
  192. #FIELD WHERE(%ControlType = 'ENTRY')
  193.   #BOXED('Entry Control Prompts')
  194.     #BOXED('When the Control Is Selected')
  195.       #PROMPT('Lookup Key',KEY),%PreLookupKey
  196.       #ENABLE(%PreLookupKey),CLEAR
  197.         #PROMPT('Lookup Field',COMPONENT(%PreLookupKey)),%PreLookupField,REQ
  198.         #PROMPT('Lookup Procedure',PROCEDURE),%PreLookupProcedure,REQ
  199.       #ENDENABLE
  200.       #PROMPT('Advanced...',EMBEDBUTTON(%ControlEventHandling,%Control,'Selected')),AT(100)
  201.     #ENDBOXED
  202.     #BOXED('When the Control Is Accepted')
  203.       #PROMPT('Lookup Key',KEY),%PostLookupKey
  204.       #ENABLE(%PostLookupKey),CLEAR
  205.         #PROMPT('Lookup Field',COMPONENT(%PostLookupKey)),%PostLookupField,REQ
  206.         #PROMPT('Lookup Procedure',PROCEDURE),%PostLookupProcedure,REQ
  207.       #ENDENABLE
  208.       #PROMPT('Advanced...',EMBEDBUTTON(%ControlEventHandling,%Control,'Accepted')),AT(100)
  209.     #ENDBOXED
  210.   #ENDBOXED
  211. #ENDFIELD
  212. #!------------------------------------------------------------------------------
  213. #GROUP(%FieldTemplateStandardEntryHandling)
  214. #CASE(%ControlEvent)
  215. #OF('Selected')
  216.   #IF(%PreLookupKey)
  217.     #FIND(%Key,%PreLookupKey)
  218.     #IF(%Key)
  219. %PreLookupField = %ControlUse
  220. GET(%File,%Key)
  221. IF ERRORCODE()
  222.   GlobalRequest = SelectRecord
  223.   %PreLookupProcedure
  224.   LocalResponse = GlobalResponse
  225.   IF LocalResponse = RequestCompleted
  226.     %ControlUse = %PreLookupField
  227.     DISPLAY(%Control)
  228.   END
  229. END
  230. LocalRequest = OriginalRequest
  231.     #ENDIF
  232.   #ENDIF
  233. #OF('Accepted')
  234.   #IF(%PostLookupKey)
  235.     #FIND(%Key,%PostLookupKey)
  236.     #IF(%Key)
  237. %PostLookupField = %ControlUse
  238. GET(%File,%Key)
  239. IF ERRORCODE()
  240.   GlobalRequest = SelectRecord
  241.   %PostLookupProcedure
  242.   LocalResponse = GlobalResponse
  243.   IF LocalResponse = RequestCompleted
  244.     %ControlUse = %PostLookupField
  245.     DISPLAY(%Control)
  246.   END
  247. END
  248. LocalRequest = OriginalRequest
  249.     #ENDIF
  250.   #ENDIF
  251. #ENDCASE
  252. #!------------------------------------------------------------------------------
  253. #GROUP(%FieldTemplateStandardCheckBoxPrompt)
  254. #FIELD WHERE(%ControlType = 'CHECK')
  255.   #BOXED('Checkbox Control Prompts')
  256.     #BOXED('When the Checkbox is Checked')
  257.       #BUTTON('Assign Values'),MULTI(%CheckedAssigns,%CheckedAssignVar & ' = ' & %CheckedAssignValue),AT(20,,160),HLP('~FieldCheckBoxAssignValuesChecked')
  258.         #DISPLAY('Values to assign when the check box is checked')
  259.         #DISPLAY('')
  260.         #PROMPT('Variable to Assign',FIELD),%CheckedAssignVariable,REQ
  261.         #PROMPT('Value to Assign',@S40),%CheckedAssignValue,REQ
  262.       #ENDBUTTON
  263.       #BUTTON('Hide/Unhide Controls'),MULTI(%CheckedHides,%CheckedControl & ' - ' & %CheckedControlAction),AT(20,,160),HLP('~FieldCheckBoxHideControlsValuesChecked')
  264.         #DISPLAY('Controls to hide/unhide when the check box is checked')
  265.         #DISPLAY('')
  266.         #PROMPT('Control to hide/unhide:',CONTROL),%CheckedControl,REQ
  267.         #PROMPT('Hide or unhide control',DROP('Hide|Unhide')),%CheckedControlAction,REQ
  268.       #ENDBUTTON
  269.     #ENDBOXED
  270.     #BOXED('When the Checkbox is Unchecked')
  271.       #BUTTON('Assign Values'),MULTI(%UncheckedAssigns,%UncheckedAssignVar & ' = ' & %UncheckedAssignValue),AT(20,,160),HLP('~FieldCheckBoxAssignValuesUnchecked')
  272.         #DISPLAY('Values to assign when the check box is unchecked')
  273.         #DISPLAY('')
  274.         #PROMPT('Variable to Assign',FIELD),%UncheckedAssignVariable,REQ
  275.         #PROMPT('Value to Assign',@S40),%UncheckedAssignValue,REQ
  276.       #ENDBUTTON
  277.       #BUTTON('Hide/Unhide Controls'),MULTI(%UnCheckedHides,%UnCheckedControl & ' - ' & %UnCheckedControlAction),AT(20,,160),HLP('~FieldCheckBoxHideControlsValuesUnchecked')
  278.         #DISPLAY('Controls to hide/unhide when the check box is unchecked')
  279.         #DISPLAY('')
  280.         #PROMPT('Control to hide/unhide:',CONTROL),%UnCheckedControl,REQ
  281.         #PROMPT('Hide or unhide control',DROP('Hide|Unhide')),%UnCheckedControlAction,REQ
  282.       #ENDBUTTON
  283.     #ENDBOXED
  284.   #ENDBOXED
  285. #ENDFIELD
  286. #!------------------------------------------------------------------------------
  287. #GROUP(%FieldTemplateStandardCheckBoxHandling)
  288. #IF(%ControlEvent='Accepted')
  289.   #IF(ITEMS(%CheckedAssigns) OR ITEMS(%CheckedHides))
  290. IF %ControlUse
  291.     #FOR(%CheckedAssigns),WHERE(%CheckedAssignVariable)
  292.   %CheckedAssignVariable = %CheckedAssignValue
  293.     #ENDFOR
  294.     #FOR(%CheckedHides)
  295.       #IF(%CheckedControlAction='Hide')
  296.   %CheckedControl{Prop:Hide} = TRUE
  297.       #ELSE
  298.   %CheckedControl{Prop:Hide} = FALSE
  299.       #ENDIF
  300.     #ENDFOR
  301. END
  302.   #ENDIF
  303.   #IF(ITEMS(%UncheckedAssigns) OR ITEMS(%UncheckedHides))
  304. IF ~%ControlUse
  305.     #FOR(%UncheckedAssigns),WHERE(%UncheckedAssignVariable)
  306.   %UncheckedAssignVariable = %UncheckedAssignValue
  307.     #ENDFOR
  308.     #FOR(%UncheckedHides)
  309.       #IF(%UncheckedControlAction='Hide')
  310.   %UncheckedControl{Prop:Hide} = TRUE
  311.       #ELSE
  312.   %UncheckedControl{Prop:Hide} = FALSE
  313.       #ENDIF
  314.     #ENDFOR
  315. END
  316.   #ENDIF
  317. #ENDIF
  318. #!------------------------------------------------------------------------------
  319. #GROUP(%FieldTemplateStandardHandling)
  320. #CASE(%ControlType)
  321. #OF('BUTTON')
  322. #INSERT(%FieldTemplateStandardButtonMenuHandling)
  323. #OF('ENTRY')
  324. #INSERT(%FieldTemplateStandardEntryHandling)
  325. #OF('CHECK')
  326. #INSERT(%FieldTemplateStandardCheckboxHandling)
  327. #OF('BUTTON')
  328. #INSERT(%FieldTemplateStandardButtonMenuHandling)
  329. #ELSE
  330.   #IF(%ControlMenu)
  331. #INSERT(%FieldTemplateStandardButtonMenuHandling)
  332.   #ENDIF
  333. #ENDCASE
  334. #!
  335. #!
  336. #!
  337. #!------------------------------------------------------------------------------
  338. #! Modified STANDARD.TPW
  339. #!------------------------------------------------------------------------------
  340. #GROUP(%StandardSecondaryLookups),AUTO
  341. #DECLARE(%MatchedKey)
  342. #FOR(%Secondary)
  343.   #FIX(%File,%Secondary)
  344.   #FIX(%Relation,%SecondaryTo)
  345.   #IF(%FileRelationType = '1:MANY')
  346.     #FOR(%RelationKeyField),WHERE(%RelationKeyFieldLink AND %RelationKeyField)
  347. %RelationKeyFieldLink = %RelationKeyField  #<! Assign linking field value
  348.     #ENDFOR
  349. GET(%File,%FileKey)                  #<! Lookup record
  350. IF ERRORCODE() THEN CLEAR(%FilePrefix:Record).#<! Clear record if unsuccessful
  351.   #ELSIF(%FileRelationType = 'MANY:1')
  352.     #SET(%MatchedKey,%True)
  353.     #SUSPEND
  354.     #FOR(%RelationKeyField)
  355.       #IF(%RelationKeyFieldLink AND %RelationKeyField)
  356. #?%RelationKeyFieldLink = %RelationKeyField  #<! Assign linking field value
  357.       #ELSE
  358.         #SET(%MatchedKey,%False)
  359.       #ENDIF
  360.     #ENDFOR
  361.     #IF(%MatchedKey)
  362. GET(%File,%FileKey)                  #<! Lookup record
  363. IF ERRORCODE() THEN CLEAR(%FilePrefix:Record).#<! Clear record if unsuccessful
  364.     #ENDIF
  365.     #RESUME
  366.   #ENDIF
  367. #ENDFOR
  368. #EMBED(%LookupRelated,'Lookup Related Records'),HLP('EmbedLookupRelated')
  369. #!------------------------------------------------------------------------------
  370. #GROUP(%StandardWindowClosing)
  371. #EMBED(%BeforeWindowClosing,'Before Closing the Window')
  372. IF WindowOpened
  373. #IF(%INIActive AND %INISaveWindow)
  374.   INISaveWindow('%Procedure','%INIFileName')
  375. #ENDIF
  376.   CLOSE(%Window)
  377. END
  378. #EMBED(%AfterWindowClosing,'After Closing the Window')
  379. #!------------------------------------------------------------------------------
  380. #GROUP(%StandardControlHandling)
  381. #FOR(%Control),WHERE(%Control)
  382.  #CASE(%ControlTemplate)
  383.  #OF('BrowseBox(ToolCraft)')
  384.  #OROF('DropComboBrowse(ToolCraft)')
  385.  #SUSPEND
  386. #?OF %Control
  387.   #SUSPEND
  388.   #?CASE EVENT()                           
  389.   #FOR(%ControlEvent)
  390.     #SUSPEND
  391.   #?OF EVENT:%ControlEvent                 
  392.     #EMBED(%ControlPreEventHandling,'Control Event Handling, Before Generated Code'),%Control,%ControlEvent
  393.     #INSERT(%FieldTemplateStandardHandling)
  394.     #EMBED(%ControlEventHandling,'Internal Control Event Handling'),%Control,%ControlEvent,HIDE
  395.     #RESUME
  396.   #ENDFOR
  397.   #SUSPEND
  398.   #?ELSE                                   
  399.     #EMBED(%ControlOtherEventHandling,'Other Control Event Handling'),%Control
  400.   #RESUME
  401.   #?END
  402.   #RESUME
  403.   #EMBED(%CallBrowseListRoutine,'Control Pre-Event Handling'),%Control,HIDE
  404.   #SUSPEND
  405.   #?CASE EVENT()                           
  406.   #FOR(%ControlEvent)
  407.     #SUSPEND
  408.   #?OF EVENT:%ControlEvent                 
  409.     #EMBED(%ControlPostEventHandling,'Control Event Handling, After Generated Code'),%Control,%ControlEvent
  410.     #RESUME
  411.   #ENDFOR
  412.   #?END
  413.   #RESUME
  414.  #RESUME
  415.  #ELSE
  416.  #SUSPEND
  417. #?OF %Control                              
  418.   #?CASE EVENT()                           
  419.   #FOR(%ControlEvent)
  420.     #SUSPEND                                
  421.   #?OF EVENT:%ControlEvent                 
  422.     #EMBED(%ControlPreEventHandling,'Control Event Handling, Before Generated Code'),%Control,%ControlEvent
  423.     #INSERT(%FieldTemplateStandardHandling)
  424.     #EMBED(%ControlEventHandling,'Internal Control Event Handling'),%Control,%ControlEvent,HIDE
  425.     #EMBED(%ControlPostEventHandling,'Control Event Handling, After Generated Code'),%Control,%ControlEvent
  426.     #RESUME
  427.   #ENDFOR
  428.   #SUSPEND
  429.   #?ELSE                                   
  430.     #EMBED(%ControlOtherEventHandling,'Other Control Event Handling'),%Control
  431.   #RESUME
  432.   #?END                                    
  433.  #RESUME
  434.  #ENDCASE
  435. #ENDFOR
  436. #!------------------------------------------------------------------------------
  437. #GROUP(%StandardWindowHandling)
  438. #FOR(%WindowEvent)
  439.   #SUSPEND
  440. #?OF EVENT:%WindowEvent
  441.   #EMBED(%WindowEventHandling,'Window Event Handling'),%WindowEvent
  442.   #CASE(%WindowEvent)
  443.   #OF('OpenWindow')
  444.   IF NOT WindowInitialized
  445.     DO InitializeWindow
  446.     WindowInitialized = True
  447.   END
  448.     #IF(%FirstFieldToSelect)
  449.   SELECT(%FirstFieldToSelect)
  450.     #ELSE
  451.   SELECT(FIRSTFIELD())
  452.     #ENDIF
  453.   #OF('GainFocus')
  454.   IF NOT WindowInitialized
  455.     WindowInitialized = True
  456.     DO InitializeWindow
  457.   ELSE
  458.     ForceRefresh = True
  459.     DO RefreshWindow
  460.   END
  461.   #ENDCASE
  462.   #EMBED(%PostWindowEventHandling,'Window Event Handling, after generated code'),%WindowEvent
  463.   #RESUME
  464. #ENDFOR
  465. #SUSPEND
  466. #?ELSE
  467.   #EMBED(%WindowOtherEventHandling,'Other Window Event Handling')
  468. #RESUME
  469. #!------------------------------------------------------------------------------
  470. #GROUP(%StandardFormula,%RequestedClass)
  471.   #FOR(%Formula),WHERE(%FormulaClass = %RequestedClass)
  472. #INSERT(%ExpandFormula,1)
  473.   #ENDFOR
  474. #!------------------------------------------------------------------------------
  475. #GROUP(%ExpandFormula,%CurrentElement)
  476.   #DECLARE(%LastElement)
  477.   #SET(%LastElement,INSTANCE(%FormulaExpression))
  478.   #SELECT(%FormulaExpression,%CurrentElement)
  479.   #CASE(%FormulaExpressionType)
  480.   #OF('=')
  481.     #IF(%FormulaExpression)
  482. %Formula = %FormulaExpression
  483.     #ELSE
  484. CLEAR(%Formula)
  485.     #ENDIF
  486.   #OF('IF')
  487. IF (%FormulaExpression)
  488.   #INSERT(%ExpandFormula,%FormulaExpressionTrue)
  489. ELSE
  490.   #INSERT(%ExpandFormula,%FormulaExpressionFalse)
  491. END
  492.   #OF('CASE')
  493. CASE (%FormulaExpression)
  494.   #INSERT(%ExpandFormulaCase,%FormulaExpressionCase)
  495. END
  496.   #ENDCASE
  497. #SELECT(%FormulaExpression,%LastElement)
  498. #!------------------------------------------------------------------------------
  499. #GROUP(%ExpandFormulaCase,%CurrentElement)
  500.   #SELECT(%FormulaExpression,%CurrentElement)
  501.   #LOOP WHILE(%CurrentElement)
  502.     #IF(%CurrentElement=0)
  503.       #BREAK
  504.     #ENDIF
  505.     #SET(%CurrentElement,%FormulaExpressionCase)
  506. OF %FormulaExpression
  507.   #INSERT(%ExpandFormula,%FormulaExpressionOf)
  508. #SELECT(%FormulaExpression,%FormulaExpressionCase)
  509.   #ENDLOOP
  510. #!------------------------------------------------------------------------------
  511. #GROUP(%StandardThreadInitialize,%ThreadProcedure,%InitThreadName)
  512.   #IF(%InitThreadName)
  513.     #FIND(%ThreadName,%InitThreadName)
  514.   #ENDIF
  515. IF START(%ThreadProcedure).
  516. #!-------------------------------------------------------------------------
  517. #GROUP(%StandardWindowGeneration),AUTO
  518. #MESSAGE('Standard Window Generation',3)
  519. #DECLARE(%NewWindowStatement)
  520. #DECLARE(%CurrentOperationMode)
  521. #DECLARE(%MenuBarFound)
  522. #DECLARE(%ToolBarFound)
  523. #EMBED(%DataSectionBeforeWindow,'Data Section, Before Window Declaration')
  524. #IF(%WindowStatement)
  525.   #IF(SUB(%WindowStatement,1,11)='APPLICATION')
  526.     #SET(%NewWindowStatement,%WindowStatement)
  527.   #ELSIF(%WindowOperationMode='Use WINDOW setting')
  528.     #SET(%NewWindowStatement,%WindowStatement)
  529.   #ELSE
  530.     #SET(%CurrentOperationMode,SUB(%WindowStatement,LEN(%WindowStatement)-3,4))
  531.     #IF(%CurrentOperationMode = ',MDI')
  532.       #IF(%WindowOperationMode = 'MDI')
  533.         #SET(%NewWindowStatement,%WindowStatement)
  534.       #ELSE
  535.         #SET(%NewWindowStatement,SUB(%WindowStatement,1,LEN(%WindowStatement)-4))
  536.         #IF(%WindowOperationMode = 'MODAL')
  537.           #SET(%NewWindowStatement,%NewWindowStatement & ',MODAL')
  538.         #ENDIF
  539.       #ENDIF
  540.     #ELSIF(%CurrentOperationMode = 'ODAL')
  541.       #IF(%WindowOperationMode = 'MODAL')
  542.         #SET(%NewWindowStatement,%WindowStatement)
  543.       #ELSE
  544.         #SET(%NewWindowStatement,SUB(%WindowStatement,1,LEN(%WindowStatement)-6))
  545.         #IF(%WindowOperationMode = 'MDI')
  546.           #SET(%NewWindowStatement,%NewWindowStatement & ',MDI')
  547.         #ENDIF
  548.       #ENDIF
  549.     #ELSE
  550.       #SET(%NewWindowStatement,%WindowStatement)
  551.       #IF(%WindowOperationMode = 'MDI')
  552.         #SET(%NewWindowStatement,%NewWindowStatement & ',MDI')
  553.       #ELSIF(%WindowOperationMode = 'MODAL')
  554.         #SET(%NewWindowStatement,%NewWindowStatement & ',MODAL')
  555.       #ENDIF
  556.     #ENDIF
  557.   #ENDIF
  558.   #IF(EXTRACT(%WindowStatement,'ICON') AND NOT EXTRACT(%WindowStatement,'IMM'))
  559.     #SET(%NewWindowStatement,%NewWindowStatement & ',IMM')
  560.   #ELSIF(EXTRACT(%WindowStatement,'MAX') AND NOT EXTRACT(%WindowStatement,'IMM'))
  561.     #SET(%NewWindowStatement,%NewWindowStatement & ',IMM')
  562.   #ENDIF
  563. %[20]Window %NewWindowStatement
  564.   #DECLARE(%Indentation,LONG)
  565.   #DECLARE(%TestValue)
  566.   #SET(%Indentation,0)
  567.   #DECLARE(%ControlSourceLine)
  568.   #FOR(%Control),WHERE(%ControlMenu)
  569.     #IF(%ControlIndent<%Indentation)
  570.       #LOOP
  571.         #SET(%Indentation,%Indentation-1)
  572. %[22+(2*%Indentation)]Null END
  573.         #IF(%ControlIndent=%Indentation)
  574.           #BREAK
  575.         #ENDIF
  576.       #ENDLOOP
  577.     #ENDIF
  578.     #IF(%MenuBarStatement AND NOT %MenuBarFound)
  579. %[22+(2*%Indentation)]Null %MenuBarStatement
  580.       #SET(%MenuBarFound,%True)
  581.       #SET(%Indentation,%Indentation+1)
  582.     #ENDIF
  583.     #SET(%ControlSourceLine,%ControlStatement)
  584. %[22+(2*%Indentation)]Null %ControlSourceLine
  585.     #IF(SUB(%ControlSourceLine,1,4)='MENU')
  586.       #SET(%Indentation,%Indentation+1)
  587.     #ENDIF
  588.   #ENDFOR
  589.   #LOOP,WHILE(%Indentation)
  590.     #SET(%Indentation,%Indentation-1)
  591. %[22+(2*%Indentation)]Null END
  592.   #ENDLOOP
  593.   #FOR(%Control),WHERE(%ControlTool)
  594.     #IF(%ControlIndent<%Indentation)
  595.       #LOOP
  596.         #SET(%Indentation,%Indentation-1)
  597. %[22+(2*%Indentation)]Null END
  598.         #IF(%ControlIndent=%Indentation)
  599.           #BREAK
  600.         #ENDIF
  601.       #ENDLOOP
  602.     #ENDIF
  603.     #IF(%ToolBarStatement AND NOT %ToolBarFound)
  604. %[22+(2*%Indentation)]Null %ToolBarStatement
  605.       #SET(%ToolBarFound,%True)
  606.       #SET(%Indentation,%Indentation+1)
  607.     #ENDIF
  608.     #SET(%ControlSourceLine,%ControlStatement)
  609.     #IF(%MessageDescription)
  610.       #IF(%ControlType <> 'STRING')
  611.         #IF(NOT EXTRACT(%ControlStatement,'MSG'))
  612.           #FIND(%Field,%ControlUse)
  613.           #IF(%FieldDescription)
  614.             #SET(%ControlSourceLine,%ControlSourceLine & ',MSG(''' & %FieldDescription & ''')')
  615.           #ENDIF
  616.         #ENDIF
  617.       #ENDIF
  618.     #ENDIF
  619. %[22+(2*%Indentation)]Null %ControlSourceLine
  620.     #IF(SUB(%ControlSourceLine,1,6)='OPTION')
  621.       #SET(%Indentation,%Indentation+1)
  622.     #ELSIF(SUB(%ControlSourceLine,1,5)='GROUP')
  623.       #SET(%Indentation,%Indentation+1)
  624.     #ELSIF(SUB(%ControlSourceLine,1,5)='SHEET')
  625.       #SET(%Indentation,%Indentation+1)
  626.     #ELSIF(SUB(%ControlSourceLine,1,3)='TAB')
  627.       #SET(%Indentation,%Indentation+1)
  628.     #ENDIF
  629.   #ENDFOR
  630.   #LOOP,WHILE(%Indentation)
  631.     #SET(%Indentation,%Indentation-1)
  632. %[22+(2*%Indentation)]Null END
  633.   #ENDLOOP
  634.   #FOR(%Control),WHERE(NOT %ControlMenu AND NOT %ControlTool)
  635.     #IF(%ControlIndent<%Indentation)
  636.       #LOOP
  637.         #SET(%Indentation,%Indentation-1)
  638. %[22+(2*%Indentation)]Null END
  639.         #IF(%ControlIndent=%Indentation)
  640.           #BREAK
  641.         #ENDIF
  642.       #ENDLOOP
  643.     #ENDIF
  644.     #SET(%ControlSourceLine,%ControlStatement)
  645.     #CASE(%ControlTemplate)
  646.     #OF('BrowseBox(ToolCraft)')
  647.       #SET(%ValueConstruct,INSTRING(',FORMAT(',%ControlSourceLine,1,1))
  648.       #IF(%ValueConstruct)
  649.         #SET(%ControlSourceLine,SUB(%ControlSourceLine,1,%ValueConstruct-1) & ',FORMAT(FORMAT:' & %ControlFrom & ':Default)' & SUB(%ControlSourceLine,%ValueConstruct+LEN(EXTRACT(%ControlSourceLine,'FORMAT'))+1,LEN(%ControlSourceLine)))
  650.       #ELSE
  651.         #SET(%ControlSourceLine,%ControlSourceLine & ',FORMAT(FORMAT:' & %ControlFrom & ':Default)')
  652.       #ENDIF
  653.     #OF('AlternateListFormat(ToolCraft)')
  654.       #CYCLE
  655.     #ENDCASE
  656.     #IF(%MessageDescription)
  657.       #IF(%ControlType <> 'STRING')
  658.         #IF(NOT EXTRACT(%ControlStatement,'MSG'))
  659.           #FIND(%Field,%ControlUse)
  660.           #IF(%FieldDescription)
  661.             #SET(%ControlSourceLine,%ControlSourceLine & ',MSG(''' & %FieldDescription & ''')')
  662.           #ENDIF
  663.         #ENDIF
  664.       #ENDIF
  665.     #ENDIF
  666. %[22+(2*%Indentation)]Null %ControlSourceLine
  667.     #IF(SUB(%ControlSourceLine,1,6)='OPTION')
  668.       #SET(%Indentation,%Indentation+1)
  669.     #ELSIF(SUB(%ControlSourceLine,1,5)='GROUP')
  670.       #SET(%Indentation,%Indentation+1)
  671.     #ELSIF(SUB(%ControlSourceLine,1,5)='SHEET')
  672.       #SET(%Indentation,%Indentation+1)
  673.     #ELSIF(SUB(%ControlSourceLine,1,3)='TAB')
  674.       #SET(%Indentation,%Indentation+1)
  675.     #ELSE
  676.       #IF(NOT %FirstField)
  677.         #SET(%FirstField,%Control)
  678.       #ENDIF
  679.       #SET(%LastField,%Control)
  680.     #ENDIF
  681.   #ENDFOR
  682.   #LOOP,WHILE(%Indentation)
  683.     #SET(%Indentation,%Indentation-1)
  684. %[22+(2*%Indentation)]Null END
  685.   #ENDLOOP
  686. %[20]Null END
  687. #ENDIF
  688. #EMBED(%DataSectionAfterWindow,'Data Section, After Window Declaration')
  689.  
  690.